#ifndef INFOID_H
#define INFOID_H

#define IID_CLASS_SIZE 100
#define iid_Number(icid, subnumber) (((unsigned int)(icid) * IID_CLASS_SIZE) + (subnumber))


/* info ID classes */

typedef enum{
	ic_General		=0,
	ic_Graphics		=1,
	ic_Spatial		=2,
	ic_Area			=3,
	ic_Mechanical	=4,
    ic_Organism		=5,
	ic_Plant		=6
} EInfoIdClass;

/* info IDs */

typedef enum{
	/* general */
	i_gen_EntityId			= iid_Number(ic_General, 0),
	i_gen_Type				= iid_Number(ic_General, 1), /* area, object, ... */
	/* graphical */
	/* spatial */
	i_spa_Position			= iid_Number(ic_Spatial, 0),
	i_spa_Shape				= iid_Number(ic_Spatial, 1),
	/* area */
	i_are_Bedrock_height	= iid_Number(ic_Area, 0),
	i_are_Soil_height		= iid_Number(ic_Area, 1),
	i_are_Soil_altitude		= iid_Number(ic_Area, 2),  /* D; = h_bed + h_soil */ 
	i_are_Soil_mud			= iid_Number(ic_Area, 3),  /* 0 (sand) ..1 (mud) */
	i_are_Water_height		= iid_Number(ic_Area, 4),
	i_are_Water_altitude	= iid_Number(ic_Area, 5),  /* D; = a_soil + h_water */
} EInfoId;

unsigned int iidClassNumber(EInfoId iid);
unsigned int iidSubNumber(EInfoId iid);
const char * iidString(EInfoId iid);
const char * iidClassString(EInfoId iid);

#endif /* INFOID_H */

